package com.example.basic.web.controller.newly;

import com.example.basic.core.result.Result;
import com.example.basic.web.request.SysExceptionalRecoveryDto;
import com.example.basic.web.service.newly.ISysExceptionalRecoveryService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 异常恢复Controller
 * 1）转运任务中，起点接驳设备故障
 * 2）转运任务中，终点接驳设备故障
 * 3）转运任务中，AGV取货动作完成前故障
 * 4）转运任务中，AGV取货动作完成后故障，离起点近
 * 5）转运任务中，AGV取货动作完成后故障，离终点近
 */
@RestController
@RequestMapping("/api/v1/byg/exception")
public class SysExceptionalRecoveryController {

    @Autowired
    private ISysExceptionalRecoveryService sysExceptionalRecoveryService;


    /**
     * 第一个异常取消
     * @param zyExceptionalRecoveryDto
     * @return
     */
    @PostMapping("/firstCancel")
    public Result<Boolean> firstCancel(@RequestBody SysExceptionalRecoveryDto zyExceptionalRecoveryDto) {
        return sysExceptionalRecoveryService.firstCancel(zyExceptionalRecoveryDto);
    }


    /**
     * 变更位置
     * @param zyExceptionalRecoveryDto
     * @return
     */
    @PostMapping("/changePosition")
    public Result<Boolean> changePosition(@RequestBody SysExceptionalRecoveryDto zyExceptionalRecoveryDto) {
        return sysExceptionalRecoveryService.changePosition(zyExceptionalRecoveryDto);
    }

    /**
     * 第二个异常 强制成功
     * @param zyExceptionalRecoveryDto
     * @return
     */
    @PostMapping("/secondSuccess")
    public Result<Boolean> secondSuccess(@RequestBody SysExceptionalRecoveryDto zyExceptionalRecoveryDto) {
        return sysExceptionalRecoveryService.secondSuccess(zyExceptionalRecoveryDto);
    }

    /**
     * 异常三 异常四处理方式一样
     * 先回滚,回滚后,起点负责人重新收到消息
     * @param zyExceptionalRecoveryDto
     * @return
     */
    @PostMapping("rollBack")
    public Result<Boolean> rollBack(@RequestBody SysExceptionalRecoveryDto zyExceptionalRecoveryDto) {
        return sysExceptionalRecoveryService.rollBack(zyExceptionalRecoveryDto);
    }

    /**
     * 异常五
     * 强制完成改流程 然后给终点负责人发代办
     * @param zyExceptionalRecoveryDto
     * @return
     */
    @PostMapping("/fifthComplete")
    public Result<Boolean> fifthComplete(@RequestBody SysExceptionalRecoveryDto zyExceptionalRecoveryDto) {
        return sysExceptionalRecoveryService.fifthComplete(zyExceptionalRecoveryDto);
    }







}
